package com.vxdata.utils.modules.utils.case_8x;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * base64图片旋转
 */
public class PictureUtil {
    // 旋转图片
    public static String rotate(String base64) {
        if (base64.startsWith("data:image/png;base64,")) {
            base64 = base64.substring("data:image/png;base64,".length());
        }
        BufferedImage bufferedImage = base64ToBufferedImage(base64);
        BufferedImage rotateImage = rotateImage(bufferedImage, -90);
        return BufferedImageToBase64(rotateImage);
    }

    public static BufferedImage base64ToBufferedImage(String base64) {
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            byte[] bytes1 = decoder.decodeBuffer(base64);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            return ImageIO.read(bais);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("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cN34++H9sLPxdCPOurGAbVvsfxL6Sfzra/4JsfGX4heOvC2t+FPHOm3mfDgjittTvEZXcHI8ps9WXHX0619qdaigtILUuYYY4i5y2xQMn1OKAJaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA83/aW/5Ny+Kv8A2Kmq/wDpHLX4D1+/H7S3/JuXxV/7FTVf/SOWvwHoA/fj9mn/AJNy+FX/AGKmlf8ApHFXpFeb/s0/8m5fCr/sVNK/9I4q9IoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPN/2lv+Tcvir/2Kmq/+kctfgPX78ftLf8m5fFX/ALFTVf8A0jlr8B6AP34/Zp/5Ny+FX/YqaV/6RxV6RXm/7NP/ACbl8Kv+xU0r/wBI4q9IoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr4A/wCCnf7S3jP4Pa14J0DwXrMukXF3HJe3DwAFn2uFVTkdOvFff9fkh+3vcN8Sf28vDHhKM+YLVtP0/wAvr80rCQ/pItAH6peBLy+1HwVoN3qZB1CexgluCowDI0YLfqTW7UFhbraWNvAgwsUaoB6AACp6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPN/2lv+Tcvir/2Kmq/+kctfgPX78ftLf8m5fFX/ALFTVf8A0jlr8B6AP34/Zp/5Ny+FX/YqaV/6RxV6RXm/7NP/ACbl8Kv+xU0r/wBI4q9IoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvmv9qL9ubwj+y/4i0/QNWsLzVdXvLQXohtQAqRlmVSWPqUb8q+lK/HT/AIKLalbXH7btl/wkUMsehWcWnwysyEh7bO+Qr6j53H1BoA9m1L/gsVZCb/QPh/LJF6zXmD+i1U/4fFv/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L4q/9ipqv/pHLX4D1+/H7S3/ACbl8Vf+xU1X/wBI5a/AegD9+P2af+TcvhV/2Kmlf+kcVekV5v8As0/8m5fCr/sVNK/9I4q9IoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAxmo5baKdSskSOp6hlBFSUUAYj+CPD0rl30PT2cnJY2yEn9K14IIrWFIoY1iiQbVRBgKPQCpKKACiiigAooooAKKKKACiiigAooooAKKKKAPN/2lv8Ak3L4q/8AYqar/wCkctfgPX78ftLf8m5fFX/sVNV/9I5a/AegD9+P2af+TcvhV/2Kmlf+kcVekV5v+zT/AMm5fCr/ALFTSv8A0jir0igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiszVPFGkaJMsOoana2UrjKpPKqEj6Go4vF+hz/wCr1eyf6Tr/AI0Aa9FRW9zDdxiSGVJYz0ZGBBqWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDzf9pb/AJNy+Kv/AGKmq/8ApHLX4D1+/H7S3/JuXxV/7FTVf/SOWvwHoA/fj9mn/k3L4Vf9ippX/pHFXpFeb/s0/wDJuXwq/wCxU0r/ANI4q9IoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD4V/bM/YF8XftA/EuXxj4d8WQ2m60igGnXjuqoyZ+6VBABzn618S+O/2GPj/8PBJIdHv9Uto+fP0q5Mox9Ac1+4lIQCMEZHvQB+Dfw3/aV+NP7M+p/Z4b7U7W2R8y6XqyM0TevDcj8K+7vgZ/wVe8HeLfI0/x/p7+F79sKb2HMlsx9T3X8q+1PFHw58L+NbV7bXdA07VYWGCtzbI/6kZFfM3xT/4JjfCLx7FNLo9nP4Uv3yVksHLR590YkUAfTPg74i+GfiDp6XvhzXLLWLZxkPaTB/5dK6Ovxt+KH7EHxw/Ziv313wVqV9rGlwneLzRJXWWMD/npGP8A64q58Lf+CpXxR+H00eneMLKD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");
        String rotate = PictureUtil.rotate(sb.toString());
        System.out.println("rotate: " + rotate);
    }

    /**
     * @param bufferedImage 图片
     * @param angel         旋转角度
     * @return
     */
    public static BufferedImage rotateImage(BufferedImage bufferedImage, int angel) {
        if (bufferedImage == null) {
            return null;
        }
        if (angel < 0) {
            // 将负数角度，纠正为正数角度
            angel = angel + 360;
        }
        int imageWidth = bufferedImage.getWidth(null);
        int imageHeight = bufferedImage.getHeight(null);
        // 计算重新绘制图片的尺寸
        Rectangle rectangle = calculatorRotatedSize(new Rectangle(new Dimension(imageWidth, imageHeight)), angel);
        // 获取原始图片的透明度
        int type = bufferedImage.getColorModel().getTransparency();
        BufferedImage newImage = null;
        newImage = new BufferedImage(rectangle.width, rectangle.height, type);
        Graphics2D graphics = newImage.createGraphics();
        // 平移位置
        graphics.translate((rectangle.width - imageWidth) / 2, (rectangle.height - imageHeight) / 2);
        // 旋转角度
        graphics.rotate(Math.toRadians(angel), imageWidth / 2, imageHeight / 2);
        // 绘图
        graphics.drawImage(bufferedImage, null, null);
        return newImage;
    }

    /**
     * 计算旋转后的尺寸
     *
     * @param src
     * @param angel
     * @return
     */
    private static Rectangle calculatorRotatedSize(Rectangle src, int angel) {
        if (angel >= 90) {
            if (angel / 90 % 2 == 1) {
                int temp = src.height;
                src.height = src.width;
                src.width = temp;
            }
            angel = angel % 90;
        }
        double r = Math.sqrt(src.height * src.height + src.width * src.width) / 2;
        double len = 2 * Math.sin(Math.toRadians(angel) / 2) * r;
        double angel_alpha = (Math.PI - Math.toRadians(angel)) / 2;
        double angel_dalta_width = Math.atan((double) src.height / src.width);
        double angel_dalta_height = Math.atan((double) src.width / src.height);

        int len_dalta_width = (int) (len * Math.cos(Math.PI - angel_alpha - angel_dalta_width));
        int len_dalta_height = (int) (len * Math.cos(Math.PI - angel_alpha - angel_dalta_height));
        int des_width = src.width + len_dalta_width * 2;
        int des_height = src.height + len_dalta_height * 2;
        return new Rectangle(new Dimension(des_width, des_height));
    }

    public static String BufferedImageToBase64(BufferedImage bufferedImage) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流
        try {
            ImageIO.write(bufferedImage, "png", baos);//写入流中
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] bytes = baos.toByteArray();//转换成字节
        BASE64Encoder encoder = new BASE64Encoder();
        String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串
        png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n
        return png_base64;
    }
}
